package com.beta.service;

import com.baomidou.framework.service.ISuperService;
import com.baomidou.mybatisplus.plugins.Page;
import com.beta.dto.product.ProductItemOptions;
import com.beta.dto.product.ProductItemDto;
import com.beta.dto.product.ProductItemQuantityDto;
import com.beta.entity.ProductItems;

import java.util.List;
import java.util.Map;

/**
 *
 * ProductItems 表数据服务层接口
 *
 */
public interface IProductItemsService extends ISuperService<ProductItems> {

    ProductItemDto getProductItem(Integer productItemId);

    List<ProductItemDto> getProductItemsBatchByIds(List<Integer> productItemIds);

    Page<ProductItemDto> selectProductItems(Page<ProductItemDto> page, Integer categoryId, String cityCode, Integer userId);

	List<ProductItemOptions> getProductItemOptions(Integer productItemId);

	Map<Integer, List<ProductItemOptions>> getProductItemOptionsBatch(List<Integer> productItemIds);

    Map<Integer, String> getProductItemOptionsTextBatch(List<Integer> productItemIds);

    /**
     * 批量修改商品项库存
     * @param productItemQuantityList
     */
    void reduceProductItemQuantityBatch(List<ProductItemQuantityDto> productItemQuantityList);

    /**
     * 恢复商品库存：例如订单过期或者取消
     * @param productItemQuantityList
     */
    void restoreProductItemQuantityBatch(List<ProductItemQuantityDto> productItemQuantityList);

    Page<ProductItemDto> searchByName(Page<ProductItemDto> page, Integer userId, String keywords);

    Page<ProductItemDto> selectDealerProductItems(Page<ProductItemDto>page, Integer userId, String cityCode);

    void updateSliderImage(Integer productItemId, Integer sliderIndex, String imageFileName);

    void deleteSliderImage(Integer productItemId, Integer sliderIndex);

}